<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>E (programming language)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/E_(programming_language)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-E_programming_language rootpage-E_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">E (programming language)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Not to be confused with <a href="AmigaE" class="mw-redirect" title="AmigaE">AmigaE</a>, <a href="E_(verification_language)" title="E (verification language)">e (verification language)</a>, <a href="GNU_E" title="GNU E">GNU E</a>, or <a href="Easy_Programming_Language" title="Easy Programming Language">Easy Programming Language</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">E</th></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="Multi-paradigm_programming_language" class="mw-redirect" title="Multi-paradigm programming language">Multi-paradigm</a>: <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a>, <a href="Message_passing" title="Message passing">message passing</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_design" title="Software design">Designed by</a></th><td class="infobox-data"><a href="Mark_S._Miller" title="Mark S. Miller">Mark S. Miller</a></td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">1997<span style="display:none"> (<span class="bday dtstart published updated">1997</span>)</span></td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Strong_typing" class="mw-redirect" title="Strong typing">Strong</a>, <a href="Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamic</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data">Portions in different <a href="Free-software_license" title="Free-software license">free licenses</a></td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="http://erights.org">erights<wbr>.org</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Major <a href="Programming_language_implementation" title="Programming language implementation">implementations</a></th></tr><tr><td colspan="2" class="infobox-full-data">E-on-Java, E-on-CL</td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="Joule_(programming_language)" title="Joule (programming language)">Joule</a>, <a rel="nofollow" class="external text" href="http://erights.org/history/original-e/">Original-E</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="Pony_(programming_language)" title="Pony (programming language)">Pony</a></td></tr></tbody></table>
<p><b>E</b> is an <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> language for <a href="Computer_security" title="Computer security">secure</a> <a href="Distributed_computing" title="Distributed computing">distributed computing</a>, created by <a href="Mark_S._Miller" title="Mark S. Miller">Mark S. Miller</a>,<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> <a href="Dan_Bornstein" class="mw-redirect" title="Dan Bornstein">Dan Bornstein</a>, <a href="Douglas_Crockford" title="Douglas Crockford">Douglas Crockford</a>,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> <a href="Chip_Morningstar" title="Chip Morningstar">Chip Morningstar</a><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> and others at Electric Communities in 1997. E is mainly descended from the concurrent language <a href="Joule_(programming_language)" title="Joule (programming language)">Joule</a> and from Original-E, a set of extensions to Java for secure distributed programming. E combines <a href="Message_(computer_science)" class="mw-redirect" title="Message (computer science)">message</a>-based computation with <a href="Java_(programming_language)" title="Java (programming language)">Java</a>-like syntax. A <a href="Concurrent_programming" class="mw-redirect" title="Concurrent programming">concurrency</a> model based on <a href="Event-driven_programming" title="Event-driven programming">event loops</a> and <a href="Promise_(programming)" class="mw-redirect" title="Promise (programming)">promises</a> ensures that <a href="Deadlock_(computer_science)" title="Deadlock (computer science)">deadlock</a> can never occur.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Philosophy">Philosophy</h2></div>
<p>The E language is designed for <a href="Computer_security" title="Computer security">computer security</a> and secure computing. This is performed mainly by strict adherence to the object-oriented computing model, which in its pure form, has properties that support secure computing. The E language and its standard <a href="Library_(computing)" title="Library (computing)">library</a> employ a <a href="Capability-based_security" title="Capability-based security">capability-based</a> design philosophy throughout in order to help programmers build secure software and to enable software components to co-operate even if they don't fully trust each other. In E, object references serve as capabilities, hence capabilities add no computational or conceptual overhead costs. The language syntax is designed to be easy for people to audit for security flaws. For example, lexical <a href="Scope_(programming)" class="mw-redirect" title="Scope (programming)">scoping</a> limits the amount of code that must be examined for its effects on a given variable. As another example, the language uses the <code>==</code> operator for comparison and the <code>:=</code> operator for assignment; to avoid the possibility of confusion, there is no <code>=</code> operator.
</p>
<div class="mw-heading mw-heading2"><h2 id="Computational_model">Computational model</h2></div>
<p>In E, all values are <a href="Object-oriented_programming" title="Object-oriented programming">objects</a> and computation is performed by sending messages to objects. Each object belongs to a <i>vat</i> (analogous to a <a href="Process_(computing)" title="Process (computing)">process</a>). Each vat has a single thread of execution, a stack frame, and an event queue. <a href="Distributed_programming" class="mw-redirect" title="Distributed programming">Distributed programming</a> is just a matter of sending messages to remote objects (objects in other vats). All communication with remote parties is <a href="Encryption" title="Encryption">encrypted</a> by the E runtime. Arriving messages are placed into the vat's event queue; the vat's event loop processes the incoming messages one by one in order of arrival.
</p><p>E has two ways to send messages: an <i>immediate call</i> and an <i>eventual send</i>. An immediate call is just like a typical function or method call in a non-concurrent language: a sender waits until a receiver finishes and returns a value. An eventual send sends a message while producing a placeholder for a result called a <a href="Promise_(programming)" class="mw-redirect" title="Promise (programming)">promise</a>. A sender proceeds immediately with the promise. Later, when a receiver finishes and yields a result, the promise resolves to a result. Since only eventual sends are allowed when communicating with remote objects, <a href="Deadlock_(computer_science)" title="Deadlock (computer science)">deadlocks</a> cannot happen. In distributed systems, the promise mechanism also minimizes delays caused by network latency.
</p>
<div class="mw-heading mw-heading2"><h2 id="Syntax_and_examples">Syntax and examples</h2></div>
<p>E's syntax is most similar to <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, though it also bears some resemblance to <a href="Python_(programming_language)" title="Python (programming language)">Python</a> and <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>. Variables are <a href="Datatype" class="mw-redirect" title="Datatype">dynamically typed</a> and lexically <a href="Scope_(programming)" class="mw-redirect" title="Scope (programming)">scoped</a>. Unlike Java or Python, however, E is composed entirely of <a href="Expression_(programming)" class="mw-redirect" title="Expression (programming)">expressions</a>. Here is an extremely simple E program:
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre> <span class="n">println</span><span class="p">(</span><span class="s2">"Hello, world!"</span><span class="p">)</span>
</pre></div>
<p>Here is a recursive function for computing the factorial of a number, written in E. Functions are defined using the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">def</code> keyword.
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre> <span class="k">def</span><span class="w"> </span><span class="nf">factorial</span><span class="p">(</span><span class="n">n</span> <span class="p">:</span><span class="nb">int</span><span class="p">)</span> <span class="p">:</span><span class="nb">int</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">1</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">n</span> <span class="o">*</span> <span class="n">factorial</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="n">throw</span><span class="p">(</span><span class="s2">"invalid argument to factorial: "</span><span class="o">+</span><span class="n">n</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>In the first line, <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">:int</code> is a <i>guard</i> that constrains the argument and result of the function. A guard is not quite the same thing as a type declaration; guards are optional and can specify constraints. The first <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">:int</code> ensures that the body of the function will only have to handle an integer argument. Without the second <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">:int</code> above, the function would not be able to return a value. Being able to see up front that information escapes out of the function is helpful for security auditing.
</p><p>Since E is intended to support secure co-operation, the canonical example for E programs is the mint, a simple electronic money system in just a few lines of E. The following code defines a function that makes mints, where each mint has its own currency. Each mint can make purses that hold its currency, and any holder of two purses of the same currency can securely transfer money between the purses. By quick examination of the source code, an E programmer can easily verify that only mints may change the amount of money in circulation, that money can only be created and not destroyed, that mints can only create money of their own currency, and that only the holder of a purse can change its balance.
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre> <span class="k">def</span><span class="w"> </span><span class="nf">makeMint</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="p">:</span><span class="nb">any</span> <span class="p">{</span>
<span class="k">def</span><span class="w"> </span><span class="p">[</span><span class="n">sealer</span><span class="p">,</span> <span class="n">unsealer</span><span class="p">]</span> <span class="o">:=</span> <span class="n">makeBrandPair</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mint</span> <span class="p">{</span>
<span class="n">to</span> <span class="n">makePurse</span><span class="p">(</span><span class="n">var</span> <span class="n">balance</span> <span class="p">:(</span><span class="nb">int</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">))</span> <span class="p">:</span><span class="nb">any</span> <span class="p">{</span>
<span class="k">def</span><span class="w"> </span><span class="nf">decr</span><span class="p">(</span><span class="n">amount</span> <span class="p">:(</span><span class="mf">0.</span><span class="o">.</span><span class="n">balance</span><span class="p">))</span> <span class="p">:</span><span class="n">void</span> <span class="p">{</span>
<span class="n">balance</span> <span class="o">-=</span> <span class="n">amount</span>
<span class="p">}</span>
<span class="k">def</span><span class="w"> </span><span class="nf">purse</span> <span class="p">{</span>
<span class="n">to</span> <span class="n">getBalance</span><span class="p">()</span> <span class="p">:</span><span class="nb">int</span> <span class="p">{</span> <span class="k">return</span> <span class="n">balance</span> <span class="p">}</span>
<span class="n">to</span> <span class="n">sprout</span><span class="p">()</span> <span class="p">:</span><span class="nb">any</span> <span class="p">{</span> <span class="k">return</span> <span class="n">mint</span><span class="o">.</span><span class="n">makePurse</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">}</span>
<span class="n">to</span> <span class="n">getDecr</span><span class="p">()</span> <span class="p">:</span><span class="nb">any</span> <span class="p">{</span> <span class="k">return</span> <span class="n">sealer</span><span class="o">.</span><span class="n">seal</span><span class="p">(</span><span class="n">decr</span><span class="p">)</span> <span class="p">}</span>
<span class="n">to</span> <span class="n">deposit</span><span class="p">(</span><span class="n">amount</span> <span class="p">:</span><span class="nb">int</span><span class="p">,</span> <span class="n">src</span><span class="p">)</span> <span class="p">:</span><span class="n">void</span> <span class="p">{</span>
<span class="n">unsealer</span><span class="o">.</span><span class="n">unseal</span><span class="p">(</span><span class="n">src</span><span class="o">.</span><span class="n">getDecr</span><span class="p">())(</span><span class="n">amount</span><span class="p">)</span>
<span class="n">balance</span> <span class="o">+=</span> <span class="n">amount</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">purse</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">mint</span>
<span class="p">}</span>
</pre></div>
<p>Objects in E are defined with the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">def</code> keyword, and within the object definition, the <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">to</code> keyword begins each method. The guard expressions in this example illustrate how to specify a value constraint (as in <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">:(int >= 0)</code> or <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">:(0..balance)</code>).
</p><p>The mint example makes use of a built-in mechanism called a <i>sealer</i>. The function <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">makeBrandPair</code> creates two associated objects, a sealer and an unsealer, such that the sealer can seal an object in a box and the unsealer is the only object that can retrieve the contents of the box. See the E website for a more detailed explanation of this money example.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Object-capability_model" title="Object-capability model">Object-capability model</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFHandy2016" class="citation web cs1">Handy, Alex (14 November 2016). <a rel="nofollow" class="external text" href="https://sdtimes.com/botnets/future-software-security/">"The future of software security"</a>. <i>SD Times</i>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFSeibel2009" class="citation book cs1">Seibel, Peter (21 December 2009). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=2kMIqdfyT8kC&q=electric+communities+e+programming+language"><i>Coders at Work: Reflections on the Craft of Programming</i></a>. Apress. pp. <span class="nowrap">95–</span>96. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781430219491</bdi>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.erights.org/history/">"E's History"</a>. <i>www.erights.org</i>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFMillerTribbleShapiro2005" class="citation journal cs1">Miller, Mark S.; Tribble, E. Dean; Shapiro, Jonathan (2005). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20220331013428/https://agoric.com/assets/pdf/papers/concurrency-among-strangers.pdf">"Concurrency Among Strangers"</a> <span class="cs1-format">(PDF)</span>. <i>Trustworthy Global Computing</i>. Lecture Notes in Computer Science. <b>3705</b>: <span class="nowrap">195–</span>229. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2005LNCS.3705..195M">2005LNCS.3705..195M</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F11580850_12">10.1007/11580850_12</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3-540-30007-6</bdi>. Archived from <a rel="nofollow" class="external text" href="https://agoric.com/assets/pdf/papers/concurrency-among-strangers.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2022-03-31<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-03-05</span></span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFReesMiller2001" class="citation web cs1">Rees, Jonathan; Miller, Mark (2001). <a rel="nofollow" class="external text" href="http://erights.org/elib/capability/ode/ode-capabilities.html#simple-money">"From Objects To Capabilities - Simple Money"</a>. <i>erights.org</i>. ERights<span class="reference-accessdate">. Retrieved <span class="nowrap">8 July</span> 2014</span>. <q>Before presenting the following simple example of capability-based money, we must attempt to head off a confusion this example repeatedly causes. We are not proposing to actually do money this way! A desirable money system must also provide for...</q></cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="http://erights.org">Official website</a></span></span></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Object-capability_security187" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Object-capability_security187" style="font-size:114%;margin:0 4em"><a href="Object-capability_model" title="Object-capability model">Object-capability</a> security</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Principle_of_least_privilege" title="Principle of least privilege">Principle of least privilege</a> (PoLP)</li>
<li><a href="Confused_deputy_problem" title="Confused deputy problem">Confused deputy problem</a></li>
<li><a href="Ambient_authority" title="Ambient authority">Ambient authority</a></li>
<li><a href="File_descriptor" title="File descriptor">File descriptor</a></li>
<li><a href="C-list_(computer_security)" title="C-list (computer security)">C-list</a></li>
<li><a href="Object-capability_model" title="Object-capability model">Object-capability model</a></li>
<li><a href="Capability-based_security" title="Capability-based security">Capability-based security</a></li>
<li><a href="Capability-based_addressing" title="Capability-based addressing">Capability-based addressing</a></li>
<li><a href="Zooko's_triangle" title="Zooko's triangle">Zooko's triangle</a></li>
<li><a href="Petname" title="Petname">Petnames</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Operating_system" title="Operating system">Operating systems</a>,<br><a href="Kernel_(operating_system)" title="Kernel (operating system)">kernels</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Capsicum_(Unix)" title="Capsicum (Unix)">Capsicum</a></li>
<li><a href="Fuchsia_(operating_system)" title="Fuchsia (operating system)">Fuchsia</a></li>
<li><a href="Genode" title="Genode">Genode</a></li>
<li><a href="GNOSIS" title="GNOSIS">GNOSIS</a> → <a href="KeyKOS" title="KeyKOS">KeyKOS</a> → <a href="EROS_(microkernel)" title="EROS (microkernel)">EROS</a> → CapROS</li>
<li><a href="Hydra_(operating_system)" title="Hydra (operating system)">Hydra</a></li>
<li><a href="IMAX_432" title="IMAX 432">iMAX 432</a></li>
<li><a href="Midori_(operating_system)" title="Midori (operating system)">Midori</a></li>
<li><a href="NLTSS" title="NLTSS">NLTSS</a></li>
<li><a href="L4_microkernel_family#High_assurance:_seL4" title="L4 microkernel family">seL4</a></li>
<li><a href="HarmonyOS" title="HarmonyOS">HarmonyOS</a> (<a href="HarmonyOS_NEXT" title="HarmonyOS NEXT">HarmonyOS NEXT</a>)</li>
<li><a href="Phantom_OS" title="Phantom OS">Phantom OS</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_language" title="Programming language">Programming languages</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Caja_project" title="Caja project">Caja–Cajita</a></li>
<li><a href="Joe-E" title="Joe-E">Joe-E</a></li>
<li><a href="Joule_(programming_language)" title="Joule (programming language)">Joule</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="File_system" title="File system">File systems</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Tahoe-LAFS" title="Tahoe-LAFS">Tahoe-LAFS</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Specialised hardware</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="BiiN" title="BiiN">BiiN</a></li>
<li><a href="CAP_computer" title="CAP computer">Cambridge CAP</a></li>
<li><a href="Flex_machine" title="Flex machine">Flex</a></li>
<li><a href="IBM_System/38" title="IBM System/38">IBM System/38</a></li>
<li><a href="Intel_iAPX_432" title="Intel iAPX 432">Intel iAPX 432</a></li>
<li><a href="Plessey_System_250" title="Plessey System 250">Plessey System 250</a></li>
<li><a href="Capability_Hardware_Enhanced_RISC_Instructions" title="Capability Hardware Enhanced RISC Instructions">CHERI</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2024-11-13" href="https://en.wikipedia.org/wiki/?title=E_(programming_language)&oldid=1257119799">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>